Serial attached storage protocols, such as serial ATA (SATA) and serial Small Computer System Interface (SCSI) (SAS) are becoming more prevalent for connecting storage devices to a computer system. In computer systems implementing such serial storage devices, one storage device in the system may communicate with others. For example, a device requesting data (referred to as the initiator device) may receive data from a target device.
A storage device typically includes a direct memory access (DMA) Descriptor Manager (DM) to manage DMA transfers by generating descriptors and keeping track of I/O execution based on requests. Functionality involved within the DMA descriptor manager (e.g., I/O context creation, Rx frame processing, descriptor generation, completion status tracking and updating the I/O context) is managed by firmware. Using firmware to implement such functions results in having to use a relatively large quantity of processing cycles.